<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<script type="text/javascript">
var id = $("input[name=id]").val();//세션 
var level = $("input[name=level]").val();//현재 접속자의 level
	$(document).ready(function(){
		//댓글 등록시 로그인이 되지 않은 상대는 경고창을 띄운 후 index페이지로 이동시킨다.
		$("#replyRegisterBtn").click(function(){
			var content=$("textarea[name=content]");
			//로그인 하지 않은 사람이 댓글 등록 버튼을 눌렀을 경우
			if($("input[name=id]").val()==""){
				alert("로그인 후 이용해주세요.");
				location.href="home.inven";
				return false;
			}
			/* 댓글 등록후 리스트를 받아와 ajax로 replyView에 보여준다.
			   ajax이후 과정은 댓글을 삭제했을 때, 수정했을 때와 같은 로직이다.
			*/
			$.ajax({
				type:"POST",
				url:"writeReply.inven",
				dataType:"json",
				data: $("#replyForm").serialize(),
				success: function(jsonData){
					showReplyList(jsonData);
					content.val(" ");
				}//success
			});//ajax
		});//댓글 등록 버튼 클릭
		
		
	});//document
	
	//댓글을 삭제할 때
	function deleteReply(replyNo,no){
		var id = $("input[name=id]").val();
		//alert(replyNo);
		$.ajax({
				type:"POST",
				url:"deleteReply.inven",
				dataType:"json",
				data: "re_no="+replyNo+"&no="+no,
				success: function(jsonData){
					showReplyList(jsonData);
				}//success
			});//ajax
	}//deleteReply
	
	//댓글을 수정하기 위한 폼을 생성해주는 메소드
	function showReplyForm(replyNo){
		var id = $("input[name=id]").val();
		$.ajax({
			type:"POST",
			url:"showReplyForm.inven",
			dataType:"json",
			data: "re_no="+replyNo,
			success: function(jsonData){
				$("#writeReplyView").show();
				var reply = "";
				reply="댓글 번호 : "+jsonData.re_no+" 글쓴이 : "+id
				+"<br><input type='hidden' name='re_no' value='"+jsonData.re_no+"'><input type='hidden' name='no' value='"+jsonData.no+"'><textarea rows='3' cols='60' name='content'>"
				+jsonData.content+"</textarea><a href='javascript:updateReply()'>수정하기</a><hr>";
				$("#formBody").html(reply);
			}//success
		});//ajax
	}//showReplyForm
	
	//수정된 댓글 내용을 실제 DB로 보내어 수정한다.
	function updateReply(){
		var id = $("input[name=id]").val();
		//alert($("#showReplyUpdateForm").serialize());
		$.ajax({
			type:"POST",
			url:"updateReply.inven",
			dataType:"json",
			data: $("#showReplyUpdateForm").serialize(),
			success: function(jsonData){
				showReplyList(jsonData);
			}//success
		});//ajax
	}//updateReply
	
	/*
		신고 버튼을 눌렀을 경우 댓글 번호를 받아온다.
		그리고 세선 아이디를 통해 신고한 사람 아이디를 가져온다.
	*/
	function replyReportClick(num){
		var id = $("input[name=id]").val();
		var url="replyReportMenu.inven?no="+num+"&id="+id;
		var pnName="report_window";
		var opt="height=400, width=300, top=200,left=500";
		//신고 정보를 선택할 수 있도록 새창을 띄운다.
		window.open(url, pnName, opt);
	}
	
	function showReplyList(jsonData){
		var id = $("input[name=id]").val();//세션 
		var level = $("input[name=level]").val();//현재 접속자의 level
		
		$("#writeReplyView").hide();
		var reply = "";
		$.each(jsonData,function(index,str){
			if(str.contentType=="red"){
				reply+="<table><tr><td>No."+str.re_no+"</td><td style='width: 50px;'>"+str.id
				+"</td><td style='width: 60%;'>&nbsp;</td><td>"+str.timePosted
				+"</td></tr></table><div style='padding: 5px;'>블라인드 처리된 글입니다.</div>";
				if(level=="admin"){
					reply+="<a href='javascript:deleteReply("+str.re_no+","+str.no+")'>관리자용 삭제</a>";
				}
			}else{
				reply+="<table><tr><td>No."+str.re_no+"</td><td style='width: 50px;'>"+str.id
					+"</td><td style='width: 60%;'>&nbsp;</td><td>"+str.timePosted
					+"</td></tr></table><div style='padding: 5px;'>"+str.content+"</div>";
				if($("input[name=id]").val()==str.id){
					reply+="<div style='font-size: 14px;'><a href='javascript:deleteReply("+str.re_no+","+str.no+")'>삭제</a>|<a href='javascript:showReplyForm("+str.re_no+")'>수정</a></div>";
				}
				//session 아이디와 댓글 아이디가 다르면 신고하기 생성
				//${sessionScope.mvo.id!=null&&sessionScope.mvo.id!=list.id}
				if(id!=""&&id!=str.id){
					reply+="<div style='font-size: 14px;'><a href='javascript:replyReportClick("+str.re_no+")'>신고하기</a></div>";
				}
			}//else
			reply+="<hr>";
		});
		$("#replyView").html(reply);
	}
</script>
<hr>

<!-- 댓글 이용은 로그인한 경우만 가능하다. -->
<c:choose>
	<c:when test="${sessionScope.mvo.id==null}">
		댓글은 로그인 후 이용해주세요
	</c:when>
	<c:otherwise>
		작성자 : ${sessionScope.mvo.id }
	</c:otherwise>
</c:choose>

<!-- 현재 접속한 유저의 level정보는 replyForm에 넣지 않고 저장 시켜서
	  level값만 가져다 쓸수 있도록 한다.
 -->
<input type="hidden" name="level" value="${sessionScope.mvo.level }">

<!-- 댓글 등록 입력 폼 
	  세션 아이디와 원본 글 번호를 hidden값에 저장시킨다.
-->
<form id="replyForm">
	<input type="hidden" name="id" value="${sessionScope.mvo.id }">
	<input type="hidden" name="no" value="${requestScope.vo.no }">
	<textarea rows="3" cols="85" name="content"></textarea>
	<input type="button" id="replyRegisterBtn" value="댓글 등록">
</form>

<!-- 댓글을 업데이트시 생성되는 입력 폼 -->
<div id="writeReplyView" style="display:none">
	<form id="showReplyUpdateForm">
		<div id="formBody">
		</div>
	</form>
</div>

<!-- replyView 글에 등록된 댓글을 보여주는 부분 -->
<div id="replyView">
	<c:forEach items="${requestScope.reply}" var="list">
		<c:choose>
			<c:when test="${list.contentType=='red'}">
			<!-- 받아온 댓글의 contentType이 red면 블라인트 처리되었다고 보여준다. -->
				<table><tr><td>No.${list.re_no}</td><td>${list.id }</td><td style="width: 60%;">&nbsp;</td><td>${list.timePosted }</td></tr></table>
				<div style="padding: 5px; color: red;">블라인드 처리된 글입니다.</div>
				<!-- 만약 현재 접속한 아이디의 level이 admin이면 삭제할 수 있는 권한을 준다. -->
				<c:if test="${sessionScope.mvo.level=='admin' }">
					<div style="font-size: 14px;">
					<a href="javascript:deleteReply(${list.re_no },${list.no})">관리자용 삭제</a>
					</div>
				</c:if>
				<hr>
			</c:when>
			
			<c:otherwise>
			<!-- 받아온 댓글의 contentType이 red가 아닌 일반글인 경우 -->
				<table><tr><td>No.${list.re_no}</td><td style="width: 50px;">${list.id }</td><td style="width: 60%;">&nbsp;</td><td>${list.timePosted }</td></tr></table>
				<div style="padding: 5px;">${list.content }</div>
				
				<!-- 글을 쓴 아이디와 현재 접속한 아이디가 같을 경우 -->
				<c:choose>
					<c:when test="${sessionScope.mvo.id==list.id}">
						<div style="font-size: 14px;">
						<a href="javascript:deleteReply(${list.re_no },${list.no})">삭제</a>|
						<a href="javascript:showReplyForm(${list.re_no })">수정</a>
						</div>
					</c:when>
				</c:choose>
				
				<!-- 비접속자도 아니고 접속한 회원과 글쓴이가 다를 경우 -->
				<c:choose>
					<c:when test="${sessionScope.mvo.id!=null&&sessionScope.mvo.id!=list.id}">
						<div style="font-size: 14px;">
						<a href="javascript:replyReportClick(${list.re_no })">신고하기</a>
						</div>
					</c:when>
				</c:choose>
				<hr>
			</c:otherwise>
		</c:choose>

	</c:forEach>
</div>